1. Field of the Invention
The present invention relates generally to an improved data processing system and more specifically to a computer implemented method, system, and computer usable program code for automatically creating a software application design utilizing reusable software assets based on machine learning and reasoning.
2. Description of the Related Art
The use of service-oriented architecture (SOA) environments and information services is fast becoming the preferred implementation for enterprise systems. Using SOA, an enterprise may be visualized as a collection of loosely coupled building blocks, called information services or business services. Information services provide a discrete business function, such as, for example, checking credit, opening an account, and so on, that can be adapted to a particular business context. As a business expands its enterprise capabilities, more information services are added to the network to accommodate the expansion. However, the design and development of information services is an error-prone, manual process, which relies heavily upon the skill and experience of a designer known as a solution architect. Because this software design process depends upon a human element, the information services within an enterprise system may lack consistency.
In addition, many enterprises are very good at producing, developing, and harvesting information technology (IT) assets, but are very poor and unsuccessful at consuming or reusing these IT assets. Two of the potentially most useful types of IT assets in software development are software models and software patterns. A key to successful software engineering when architecting, designing, and building software applications, such as, for example, SOA solutions, lies in developing a robust and appropriate architecture for the information services and applications that comprise a business solution. Primarily due to the inherent complexity involved in understanding the specific requirements and fit for a given software architecture, this long and difficult process of engineering software architectures has seen little application of reusable IT assets and instead has been uniquely developed for each new business scenario.